This invention relates to the building and using of communication services, and more particularly to a protocol for building and using computer based communication services.
The client-server model is currently the most popular model for building and using computer based communication services. The model represents the user of a service as a client that sends requests to, and receives responses from, a server. In a typical client-server architecture, both the client and server are computing facilities, and the request-response pair is implemented through distributed software using method invocation. For an example of how a client-server architecture is implemented through distributed software see: Orfali and Harkey, xe2x80x9cClient/Server with Distributed Objectsxe2x80x9d, Byte Magazine, April, 1995, pp. 151-162.
The distributed software client-server architecture is well suited for those applications in which requests and responses are limited and inflexible, such as in those situations where the user and/or server has access to limited computing facilities. For example, the user facility may be a telephone set and the server facility may be a voice conference bridge that simply responds to requests initiated by the user with the telephone set.
However, the client-server model is not well-suited for the development of services that involve more extensive interactions. Two services which often involve extensive interactions are multimedia services and multiparty services. Such services include, for example, a user who might want to choose a video conferencing service based on the cost at the time of use. As another example, two users might decide to interact through both voice and video only after they have exchanged several messages. As a further example, a video bridging server might interact with several logging servers before locating one that can store video minutes of a meeting under some set of constraints. In these types of services, interactions between a user and a server, between users, or between servers may take on the form of xe2x80x9cnegotiationsxe2x80x9d, a form of interaction to which the client-server architecture does not lend itself.
It has been recognized that in order to support a wide range of new communication services, it is highly desirable to have a software framework that permits not only the fixed, negotiations associated with remote procedure calls, but also the dynamic, protracted negotiations associated with peer-to-peer interactions. The present invention provides a software framework that permits dynamic negotiation.
In a communication system in accordance with the present invention a communication session involves one or more xe2x80x9cagentsxe2x80x9d and one or more xe2x80x9cbrokersxe2x80x9d. Each communication session is managed by a broker which creates and maintains the session. An agent may cause a broker to alter a communication session by entering into xe2x80x9cnegotiationsxe2x80x9d with the broker. It is also possible for an agent, through the broker, to enter into negotiations with one or more other agents. Negotiations, between agents and between agents and brokers may consist of any number of exchanged messages (or xe2x80x9coffersxe2x80x9d), thereby allowing for the dynamic negotiations necessary for effective multimedia multiparty communications.